

#ifndef __CE_NODECOLLECTION_H__
#define __CE_NODECOLLECTION_H__

#include <cegfx/ceexport.h>
#include <cegfx/ceboundingbox.h>
#include <cegfx/cenode.h>
#include <cegfx/cetransform.h>
#include <cegfx/ceupdateenv.h>
#include <d3dx9.h>
#include <cecore/iqf.h>
#include <cegfx/idynamiccontent.h>
#include <vector>

class ceNodeCollection;

typedef ceNodeCollection *ceNodeCollectionPtr;
typedef std::vector<ceNodeCollectionPtr> ceNodeCollectionVector;

class CE_GFX_API ceNodeCollection : public ceNode
{
	IQF_DECLARATION;
protected:
	ceNodeVector							nodes;

private:

	D3DXMATRIX								inverse;

public:

	ceNodeCollection ();
	~ceNodeCollection ();

	virtual void BeginTransformation ();
	virtual void EndTransformation ();

	virtual void Update (const ceUpdateEnv& env);

	virtual void AddNode (ceNodePtr node);
	virtual void RemoveNode (ceNodePtr node);
	virtual unsigned GetNumberOfNodes () const;
	virtual ceNodePtr GetNode (unsigned idx);
	virtual const ceNodePtr GetNode (unsigned idx) const;

	/*
	void AddNodeCollection (ceNodeCollectionPtr collection);
	void RemoveNodeColletion (ceNodeCollectionPtr collection);
	virtual unsigned GetNumberOfNodeCollections () const;
	virtual ceNodeCollectionPtr GetNodeCollection (unsigned idx);
	virtual const ceNodeCollectionPtr GetNodeCollection (unsigned idx) const;
	*/
};

#endif /* ! __CE_NODECOLLECTION_H__ */ 
